#!/bin/bash

# 添加用户到sudo组的脚本
# 提供三种不同的方法来实现该功能:
# 1. 使用usermod命令
# 2. 使用gpasswd命令
# 3. 直接编辑sudoers文件

# 默认用户名和全名
username="admin"
fullname="Admin User"

# 方法1: 使用usermod命令添加用户到sudo组
add_user_with_usermod() {
    if id -u $username &> /dev/null; then
        echo "用户 $username 已存在"
    else
        useradd -m -c "$fullname" $username
        usermod -aG sudo $username
        echo "已使用usermod命令将用户 [$username] 添加到sudo组"
    fi
}

# 方法2: 使用gpasswd命令添加用户到sudo组
add_user_with_gpasswd() {
    if id -u $username &> /dev/null; then
        echo "用户 $username 已存在"
    else
        useradd -m -c "$fullname" $username
        gpasswd -a $username sudo
        echo "已使用gpasswd命令将用户 [$username] 添加到sudo组"
    fi
}

# 方法3: 通过编辑sudoers文件添加用户权限
add_user_with_sudoers() {
    if id -u $username &> /dev/null; then
        echo "用户 $username 已存在"
    else
        useradd -m -c "$fullname" $username
        echo "$username ALL=(ALL:ALL) ALL" >> /etc/sudoers
        echo "已通过编辑sudoers文件将用户 [$username] 添加sudo权限"
    fi
}

# 主函数:显示菜单并处理用户选择
main() {
    echo "请选择添加sudo用户的方法:"
    echo "1) 使用usermod命令"
    echo "2) 使用gpasswd命令"
    echo "3) 直接编辑sudoers文件"
    read -p "请输入选择(1-3): " choice

    case $choice in
        1) add_user_with_usermod ;;
        2) add_user_with_gpasswd ;;
        3) add_user_with_sudoers ;;
        *) echo "无效的选择" ;;
    esac
}

# 检查脚本是否被直接执行
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
    # 检查当前用户是否为root用户
    if [[ $EUID -ne 0 ]]; then
        # 如果不是root用户，输出提示信息并退出
        echo "请以root用户身份运行此脚本" && exit 1
    fi
    main "$@"
fi
